package com.micro.ai.template.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.micro.ai.template.entity.TemplateFavorite;

/**
 * 模板收藏Service
 *
 * @author micro-ai
 * @since 0.0.1
 */
public interface TemplateFavoriteService extends IService<TemplateFavorite> {

    /**
     * 收藏模板
     *
     * @param templateId 模板ID
     * @param userId 用户ID
     * @return 收藏记录
     */
    TemplateFavorite favoriteTemplate(String templateId, String userId);

    /**
     * 取消收藏
     *
     * @param templateId 模板ID
     * @param userId 用户ID
     */
    void unfavoriteTemplate(String templateId, String userId);

    /**
     * 检查是否已收藏
     *
     * @param templateId 模板ID
     * @param userId 用户ID
     * @return 是否已收藏
     */
    boolean isFavorited(String templateId, String userId);

    /**
     * 获取用户的收藏列表
     *
     * @param userId 用户ID
     * @param page 分页参数
     * @return 收藏列表
     */
    IPage<TemplateFavorite> getUserFavorites(String userId, Page<TemplateFavorite> page);

    /**
     * 获取模板的收藏数
     *
     * @param templateId 模板ID
     * @return 收藏数
     */
    long getFavoriteCount(String templateId);
}

